//package com.weixin.engine.filter;
//
//import javax.servlet.ReadListener;
//import javax.servlet.ServletInputStream;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletRequestWrapper;
//import java.io.BufferedReader;
//import java.io.ByteArrayInputStream;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.nio.charset.StandardCharsets;
//
///**
// * 请求参数重写
// *
// * @author wangchunhui
// * @date 2022/4/28 20:28
// */
//public class RequestWrapper extends HttpServletRequestWrapper {
//
//    private byte[] body;
//
//    public RequestWrapper(HttpServletRequest request) {
//        super(request);
//        body = ServletRequestUtil.getBodyString(request).getBytes(StandardCharsets.UTF_8);
//    }
//
//    @Override
//    public BufferedReader getReader() throws IOException {
//        return new BufferedReader(new InputStreamReader(getInputStream()));
//    }
//
//    /**
//     * 重写获取 输入流的方法，保证流可写可读多次
//     *
//     * @return javax.servlet.ServletInputStream
//     * @author wangchunhui
//     * @date 2022/4/28 20:28
//     */
//    @Override
//    public ServletInputStream getInputStream() {
//
//        final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body);
//
//        return new ServletInputStream() {
//
//            @Override
//            public boolean isFinished() {
//                return false;
//            }
//
//            @Override
//            public boolean isReady() {
//                return false;
//            }
//
//            @Override
//            public void setReadListener(ReadListener readListener) {
//
//            }
//
//            @Override
//            public int read() throws IOException {
//                return byteArrayInputStream.read();
//            }
//        };
//    }
//
//    public byte[] getBody() {
//        return body;
//    }
//
//    public void setBody(byte[] body) {
//        this.body = body;
//    }
//}